/*
 * Copyright 2008 LIN CHUNGYI.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package xmarsh.foo.zippost.server;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import xmarsh.foo.zippost.client.ZipValue;

public class ZipCode {
	// 全省各縣市
	public static final String[] city = { "台北市", "基隆市", "台北縣", "宜蘭縣", "新竹市",
			"新竹縣", "桃園縣", "苗栗縣", "台中市", "台中縣", "彰化縣", "南投縣", "嘉義市", "嘉義縣",
			"雲林縣", "台南市", "台南縣", "高雄市", "高雄縣", "澎湖縣", "屏東縣", "台東縣", "花蓮縣",
			"金門縣", "連江縣", "南海諸島", "釣魚台列嶼", "其他" };

	// 台北市
	public static final String[][] zone = {
			{ "中正區", "大同區", "中山區", "松山區", "大安區", "萬華區", "信義區", "士林區", "北投區",
					"內湖區", "南港區", "文山區(木柵)", "文山區(景美)" },
			// 基隆市
			{ "仁愛區", "信義區", "中正區", "中山區", "安樂區", "暖暖區", "七堵區" },
			// 台北縣
			{ "萬里鄉", "金山鄉", "板橋市", "汐止市", "深坑鄉", "石碇鄉", "瑞芳鎮", "平溪鄉", "雙溪鄉",
					"貢寮鄉", "新店市", "坪林鄉", "烏來鄉", "永和市", "中和市", "土城市", "三峽鎮",
					"樹林市", "鶯歌鎮", "三重市", "新莊市", "泰山鄉", "林口鄉", "蘆洲市", "五股鄉",
					"八里鄉", "淡水鎮", "三芝鄉", "石門鄉" },
			// 宜蘭縣
			{ "宜蘭市", "頭城鎮", "礁溪鄉", "壯圍鄉", "員山鄉", "羅東鎮", "三星鄉", "大同鄉", "五結鄉",
					"冬山鄉", "蘇澳鎮", "南澳鄉" },
			// 新竹市
			{ "新竹市" },
			// 新竹縣
			{ "竹北市", "湖口鄉", "新豐鄉", "新埔鄉", "關西鎮", "芎林鄉", "寶山鄉", "竹東鎮", "五峰鄉",
					"橫山鄉", "尖石鄉", "北埔鄉", "峨嵋鄉" },
			{ "中壢市", "平鎮", "龍潭鄉", "楊梅鎮", "新屋鄉", "觀音鄉", "桃園市", "龜山鄉", "八德市",
					"大溪鎮", "復興鄉", "大園鄉", "蘆竹鄉" },// 桃園縣
			{ "竹南鎮", "頭份鎮", "三灣鄉", "南庄鄉", "獅潭鄉", "後龍鎮", "通霄鎮", "苑裡鎮", "苗栗市",
					"造橋鄉", "頭屋鄉", "公館鄉", "大湖鄉", "泰安鄉", "鉰鑼鄉", "三義鄉", "西湖鄉",
					"卓蘭鄉" },// 苗栗縣
			{ "中區", "東區", "南區", "西區", "北區", "北屯區", "西屯區", "南屯區" },// 台中市
			{ "太平市", "大里市", "霧峰鄉", "烏日鄉", "豐原市", "后里鄉", "石岡鄉", "東勢鎮", "和平鄉",
					"新社鄉", "潭子鄉", "大雅鄉", "神岡鄉", "大肚鄉", "沙鹿鎮", "龍井鄉", "梧棲鎮",
					"清水鎮", "大甲鎮", "外圃鄉", "大安鄉" },// 台中縣
			{ "彰化市", "芬園鄉", "花壇鄉", "秀水鄉", "鹿港鎮", "福興鄉", "線西鄉", "和美鎮", "伸港鄉",
					"員林鎮", "社頭鄉", "永靖鄉", "埔心鄉", "溪湖鎮", "大村鄉", "埔鹽鄉", "田中鎮",
					"北斗鎮", "田尾鄉", "埤頭鄉", "溪州鄉", "竹塘鄉", "二林鎮", "大城鄉", "芳苑鄉",
					"二水鄉" },// 彰化縣
			{ "南投市", "中寮鄉", "草屯鎮", "國姓鄉", "埔里鎮", "仁愛鄉", "名間鄉", "集集鄉", "水里鄉",
					"魚池鄉", "信義鄉", "竹山鎮", "鹿谷鄉" },// 南投縣
			{ "嘉義市" },// 嘉義市
			{ "番路鄉", "梅山鄉", "竹崎鄉", "阿里山鄉", "中埔鄉", "大埔鄉", "水上鄉", "鹿草鄉", "太保市",
					"朴子市", "東石鄉", "六腳鄉", "新港鄉", "民雄鄉", "大林鎮", "漢口鄉", "義竹鄉",
					"布袋鎮" },// 嘉義縣
			{ "斗南市", "大埤鄉", "虎尾鎮", "土庫鎮", "褒忠鄉", "東勢鄉", "台西鄉", "崙背鄉", "麥寮鄉",
					"斗六市", "林內鄉", "古坑鄉", "莿桐鄉", "西螺鎮", "二崙鄉", "北港鎮", "水林鄉",
					"口湖鄉", "四湖鄉", "元長鄉" },// 雲林縣
			{ "中區", "東區", "南區", "西區", "北區", "安平區", "安南區" },// 台南市
			{ "永康市", "歸仁鄉", "新化鎮", "左鎮鄉", "玉井鄉", "楠西鄉", "南化鄉", "仁德鄉", "關廟鄉",
					"龍崎鄉", "官田鄉", "麻豆鎮", "佳里鎮", "西港鄉", "七股鄉", "將軍鄉", "學甲鎮",
					"北門鄉", "新營市", "後壁鄉", "白河鎮", "東山鄉", "六甲鄉", "下營鄉", "柳營鄉",
					"鹽水鎮", "善化鎮", "大內鄉", "山上鄉", "新市鄉", "安定鄉" },// 台南縣
			{ "新興區", "前金區", "苓雅區", "鹽埕區", "鼓山區", "旗津區", "前鎮區", "三民區", "楠梓區",
					"小港區", "左營區" },// 高雄市
			{ "仁武鄉", "大社鄉", "岡山鎮", "路竹鄉", "阿蓮鄉", "田寮鄉", "燕巢鄉", "橋頭鄉", "梓官鄉",
					"彌陀鄉", "永安鄉", "湖內鄉", "鳳山市", "大寮鄉", "林園鄉", "鳥松鄉", "大樹鄉",
					"旗山鎮", "美濃鎮", "六龜鄉", "內門鄉", "杉林鄉", "甲仙鄉", "桃源鄉", "三民鄉",
					"茂林鄉", "茄萣鄉" },// 高雄縣
			{ "馬公市", "西嶼鄉", "望安鄉", "七美鄉", "白沙鄉", "湖西鄉" },// 澎湖縣
			{ "屏東市", "三地門鄉", "霧台鄉", "瑪家鄉", "九如鄉", "里港鄉", "高樹鄉", "鹽埔鄉", "長治鄉",
					"麟洛鄉", "竹田鄉", "內埔鄉", "萬丹鄉", "潮州鎮", "泰武鄉", "來義鄉", "萬巒鄉",
					"嵌頂鄉", "新埤鄉", "南州鄉", "林邊鄉", "東港鎮", "琉球鄉", "佳冬鄉", "新園鄉",
					"枋寮鄉", "枋山鄉", "春日鄉", "獅子鄉", "車城鄉", "牡丹鄉", "恆春鎮", "滿州鄉" },// 屏東縣
			{ "台東市", "綠島鄉", "蘭嶼鄉", "延平鄉", "卑南鄉", "鹿野鄉", "關山鎮", "海端鄉", "池上鄉",
					"東河鄉", "成氐", "長濱鄉", "太麻里鄉", "金峰鄉", "大武鄉", "達仁鄉" },// 台東縣
			{ "花蓮市", "新城鄉", "秀林鄉", "吉安鄉", "壽豐鄉", "鳳林鎮", "光復鄉", "豐濱鄉", "瑞穗鄉",
					"萬榮鄉", "玉里鎮", "卓溪鄉", "富里鄉" },// 花蓮縣
			{ "金沙鎮", "金湖鎮", "金寧鄉", "金城鎮", "烈嶼鄉", "烏坵鄉" },// 金門縣
			{ "南竿鄉", "北竿鄉", "莒光鄉", "東引" },// 連江縣
			{ "東沙", "西沙" },// 南海諸島
			{ "釣魚台列嶼" },// 釣魚台列嶼
			{ "其他" } // 外國
	};

	public static final String[][] code = {
			{ "100", "103", "104", "105", "106", "108", "110", "111", "112",
					"114", "115", "116", "117" },// 台北市
			{ "200", "201", "202", "203", "204", "205", "206" },// 基隆市
			{ "207", "208", "220", "221", "222", "223", "224", "226", "227",
					"228", "231", "232", "233", "234", "235", "236", "237",
					"238", "239", "241", "242", "243", "244", "247", "248",
					"249", "251", "252", "253" },// 台北縣
			{ "260", "261", "262", "263", "264", "265", "266", "267", "268",
					"269", "270", "272" },// 宜蘭縣
			{ "300" },// 新竹市
			{ "302", "303", "304", "305", "306", "307", "308", "310", "311",
					"312", "313", "314", "315" },// 新竹縣
			{ "320", "324", "325", "326", "327", "328", "330", "333", "334",
					"335", "336", "337", "338" },// 桃園縣
			{ "350", "351", "352", "353", "354", "356", "357", "358", "360",
					"361", "362", "363", "364", "365", "366", "367", "368",
					"369" },// 苗栗縣
			{ "400", "401", "402", "403", "404", "406", "407", "408" },// 台中市
			{ "411", "412", "413", "414", "420", "421", "422", "423", "424",
					"426", "427", "428", "429", "432", "433", "434", "435",
					"436", "437", "438", "439" },// 台中縣
			{ "500", "502", "503", "504", "505", "506", "507", "508", "509",
					"510", "511", "5112", "513", "514", "515", "516", "520",
					"521", "522", "523", "524", "525", "526", "527", "528",
					"530" },// 彰化縣
			{ "540", "541", "542", "544", "545", "546", "551", "552", "553",
					"555", "556", "557", "558" },// 南投縣
			{ "600" },// 嘉義市
			{ "602", "603", "604", "605", "606", "607", "608", "611", "612",
					"613", "614", "615", "616", "621", "622", "623", "624",
					"625" },// 嘉義縣
			{ "630", "631", "632", "633", "634", "635", "636", "637", "638",
					"640", "643", "646", "647", "648", "649", "651", "652",
					"653", "654", "655" },// 雲林縣
			{ "700", "701", "702", "703", "704", "708", "709" },// 台南市
			{ "710", "711", "712", "713", "714", "715", "716", "717", "718",
					"719", "720", "721", "722", "723", "724", "725", "726",
					"727", "730", "731", "732", "733", "734", "735", "736",
					"737", "741", "742", "743", "744", "745" },// 台南縣
			{ "800", "801", "802", "803", "804", "805", "806", "807", "811",
					"812", "813" },// 高雄市
			{ "814", "815", "820", "821", "822", "823", "824", "825", "826",
					"827", "828", "829", "830", "831", "832", "833", "840",
					"842", "843", "844", "845", "846", "847", "848", "849",
					"851", "852" },// 高雄縣
			{ "880", "881", "882", "883", "884", "885" },// 澎湖縣
			{ "900", "901", "902", "903", "904", "905", "906", "907", "908",
					"909", "911", "912", "913", "920", "921", "922", "923",
					"924", "925", "926", "927", "928", "929", "931", "932",
					"940", "941", "942", "943", "944", "945", "946", "947" },// 屏東縣
			{ "950", "951", "952", "953", "954", "955", "956", "957", "958",
					"959", "961", "962", "963", "964", "965", "966" },
			{ "970", "971", "972", "973", "974", "975", "976", "977", "978",
					"979", "981", "982", "983" },// 花蓮縣
			{ "890", "891", "892", "893", "894", "896" },// 金門縣
			{ "209", "210", "211", "212" },// 連江縣
			{ "817", "819", "290" },// 南海諸島
			{ "290" },// 釣魚台列嶼
			{ " " } // 外國
	};

	public List<String> getCityList() {
		return Arrays.asList(city);
	}

	public ZipValue getZipValue(int cityId, int zoneId){
		ZipValue zv = new ZipValue();
		zv.setCityName(city[cityId]);
		zv.setName(zone[cityId][zoneId]);
		zv.setCode(code[cityId][zoneId]);
		return zv;
	}
	
	public List<ZipValue> getZipValueList(int id) {
		ArrayList<ZipValue> r = new ArrayList<ZipValue>();
		if (id >= 0) {
			String[] arr = zone[id];
			for (int i = 0; i < arr.length; i++) {
				ZipValue zv = new ZipValue();
				zv.setName(arr[i]);
				zv.setCode(code[id][i]);
				r.add(zv);
			}
		}
		return r;
	}

}
